package com.excesys.task;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.excesys.mapper.ProductOrderMapper;
import com.excesys.pojo.ProductOrder;
import com.excesys.util.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

@Slf4j
@Component
public class MyOrderTask {

    @Resource
    private ProductOrderMapper productOrderMapper;

    @Autowired
    private RedisUtils redisUtils;

    @Scheduled(cron = "0 0/1 * * * ?")
    public void orderSync() {
        QueryWrapper<ProductOrder> qw = new QueryWrapper<>();
        qw.eq("order_status", 0);
        List<ProductOrder> productOrders = productOrderMapper.selectList(qw);
        for (int i = 0; i < productOrders.size(); i++) {
            //如果在过期时间内订单未支付则删除redis中的订单信息
            long expire = redisUtils.getExpire(productOrders.get(i).getOut_trade_no());
            log.info(productOrders.get(i).getOut_trade_no() + "过期时间" + expire);
            if (expire <= 0) {
                redisUtils.del(productOrders.get(i).getOut_trade_no());
                UpdateWrapper uw = new UpdateWrapper();
                uw.eq("out_trade_no", productOrders.get(i).getOut_trade_no());
                uw.set("order_status", 3);
                int flag = productOrderMapper.update(new ProductOrder(), uw);
                log.info(productOrders.get(i).getOut_trade_no() + "超时订单修改" + flag);
            }
        }

    }

}

